﻿namespace Kyoh.Lib.Excel
{
    /// <summary>改ページを表す基底クラス。</summary>
    public abstract class PageBreakBase : Component
    {
        /// <summary>Excel COM オブジェクトで、新しいインスタンスを初期化します。</summary>
        /// <param name="obj">Excel COM オブジェクト</param>
        /// <param name="parent">親となる <see cref="Component"/> オブジェクト。</param>
        protected PageBreakBase(object obj, Component parent)
			:base(obj,parent){}

        /// <summary>全画面表示で改ページするか、印刷領域のみで改ページするかを取得・設定します。</summary>
        public PageBreakExtent Extent
		{
			get { return (PageBreakExtent)(int)base.GetProperty("Extent"); }
		}
        /// <summary>改ページのセル位置を取得・設定します。</summary>
        public Range Location
		{
			get { return Range.Create(base.GetProperty("Location"), this); }
			set { base.SetProperty("Location", (value == null) ? null : value.ExcelComObject); }
		}
        /// <summary>改ページの方法を取得・設定します。</summary>
        public PageBreak Type
		{
			get { return (PageBreak)(int)base.GetProperty("Type"); }
			set { base.SetProperty("Type", (int)value); }
		}

        /// <summary>改ページを削除します。</summary>
        public void Delete()
		{
			base.InvokeMethod("Delete");
		}

        /// <summary>改ページ プレビューで表示されている場合、改ページを印刷領域の外に移動します。</summary>
        /// <param name="Direction">改ページを移動する方向。</param>
        /// <param name="RegionIndex">改ページの印刷範囲領域のインデックス。</param>
		public void DragOff(Direction Direction, int RegionIndex)
		{
			base.InvokeMethod("DragOff", (int)Direction, RegionIndex);
		}
	}
}
